home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / TRISSRC.ZIP / init.c < prev    next >
C/C++ Source or Header  |  1996-05-19  |  4KB  |  219 lines

  1. /*************************************/
  2. /* DN PCTRIS - Initialisierung, Exit */
  3. /*************************************/
  4.  
  5. #include <stdlib.h>
  6. #include <i86.h>
  7. #include <dn.h>
  8. #include "DEFS.H"
  9. #include "VARS.H"
  10.  
  11. /* Funktionsprototypen */
  12. BOOLEAN spiel_init(int gfx);
  13. void spiel_exit();
  14. void spiel_reset();
  15. void pause(long time);
  16. void dn_intro(BYTE sounddevice);
  17.  
  18. extern void neuer_fallstein(SPIELER *sp);
  19. extern void spieler_tasten(int nr);
  20. extern void spieler_cursortasten(int nr);
  21. extern void spieler_buchstaben(int nr);
  22. extern void spieler_buchstaben_control(int nr);
  23.  
  24. extern void zeichne_spielfeld();
  25.  
  26. /* Funktionen */
  27. BOOLEAN spiel_init(int gfx)
  28. {
  29.     int i, z;
  30.  
  31.     if(!init_gfx(0x13))
  32.     {
  33.         exit_sound();
  34.         puts("Graphixinit-error!\n");
  35.         return(FALSE);
  36.     }
  37.  
  38.     /* DN-Vorspann */
  39. //    dn_intro(4);    // sounddevice 4 = nosound
  40. //    stop_sound();
  41. //    exit_sound();
  42.  
  43.     load_font("FONT.PIX", 0, ' ', 6, 6, &schrift);
  44.     if(grafixmode == 0x100)
  45.     {
  46.         schrift.char_w *= 2;
  47.         schrift.char_h *= 2;
  48.     }
  49.  
  50.     set_mode(grafixmode);
  51.  
  52.     keyInstall();
  53.  
  54.     hintergrund = malloc(screen_width * screen_height);
  55.     if(gfxmode == 0x13)
  56.     {
  57.         load_pic("STEINE.PIX", screen_addr, alt_rgb);
  58.         get(0, 190, 9, 199, &steinpix[0][0]);
  59.         for(i = 0; i < STEINARTEN; i++)
  60.             for(z = 0; z < 17; z++)
  61.                 get(z * 10, i * 10, z * 10 + 9, i * 10 + 9, &steinpix[i + 1][z]);
  62.         get(0, 70, 80, 140, &gameoverpix);
  63.     }
  64.     else
  65.     {
  66.         load_pic("STEINES.PIX", screen_addr, alt_rgb);
  67.         get(0, 380, 19, 399, &steinpix[0][0]);
  68.         for(i = 0; i < STEINARTEN; i++)
  69.             for(z = 0; z < 17; z++)
  70.                 get(z * 20, i * 20, z * 20 + 19, i * 20 + 19, &steinpix[i + 1][z]);
  71.         get(0, 140, 160, 280, &gameoverpix);
  72.     }
  73.  
  74.     anz_spieler = 1;
  75.  
  76.     return(TRUE);
  77. }
  78.  
  79. void spiel_exit()
  80. {
  81.     int i, z;
  82.  
  83.     for(i = 0; i < STEINARTEN; i++)
  84.         for(z = 0; z < 17; z++)
  85.             free(steinpix[i][z].mem);
  86.     free(gameoverpix.mem);
  87.  
  88.     keyRemove();
  89.  
  90.     free(hintergrund);
  91.  
  92.     exit_gfx();
  93. }
  94.  
  95. void spiel_reset()
  96. {
  97.     int x, y, i;
  98.  
  99.     if(gfxmode == 0x13)
  100.         load_pic("HINTER.PIX", hintergrund, spielpal);
  101.     else
  102.         load_pic("HINTERS.PIX", hintergrund, spielpal);
  103.  
  104.     srand((int)timer());
  105.  
  106.     for(i = 0; i < anz_spieler; i++)
  107.     {
  108.         spieler[i].nr = i;
  109.         spieler[i].punkte = 0;
  110.         spieler[i].reihen = 0;
  111.         spieler[i].starthoehe = 0;
  112.         spieler[i].level = 0;
  113.  
  114.         if(anz_spieler == 1)
  115.             spieler[i].steuern = spieler_tasten;
  116.         else if(i == 0)
  117.             spieler[i].steuern = spieler_buchstaben_control;
  118.         else
  119.             spieler[i].steuern = spieler_tasten;
  120.  
  121.         for(y = 0; y < FELD_H; y++)
  122.             for(x = 0; x < FELD_W; x++)
  123.                 spieler[i].feld[x][y] = 0;
  124.  
  125.         neuer_fallstein(&spieler[i]);
  126.     }
  127.  
  128.     spieler[0].gameover = 100;
  129.     spieler[1].gameover = 100;
  130.  
  131.     zeichne_spielfeld();
  132.     Copy2Screen();
  133.     SetPalette(spielpal);
  134. }
  135.  
  136. void pause(long time)
  137. {
  138.     long t;
  139.  
  140.     t = timer();
  141.     while(timer() - t < time)
  142.     {
  143.         play_sound();
  144.         delay(10);
  145.     }
  146. }
  147.  
  148. void dn_intro(BYTE sounddevice)
  149. {
  150.     RGB dnpal[256];
  151.     void *dnpix;
  152.     RGB blitzpal[2][256];
  153.     void *blitzpix[2];
  154.     SAMPLE *donner;
  155.  
  156.     if(alt_pressed())
  157.         return;
  158.  
  159.     dnpix = malloc(64000);
  160.     blitzpix[0] = malloc(64000);
  161.     blitzpix[1] = malloc(64000);
  162.  
  163.     if(!init_sample("DONNER.WAV", &donner, sounddevice, 3))
  164.     {
  165.         exit_gfx();
  166.         puts("Sound-Initialization: ERROR\n");
  167.         exit(-1);
  168.     }
  169.  
  170.     cls(0);
  171.     load_pic("DNIGHT.PIX", dnpix, dnpal);
  172.     load_pic("BLITZ1.PIX", blitzpix[0], blitzpal[0]);
  173.     load_pic("BLITZ2.PIX", blitzpix[1], blitzpal[1]);
  174.  
  175.     /* DN */
  176.     ClearPalette(alt_rgb);
  177.     putvollbild(dnpix);
  178.     Copy2Screen();
  179.     PaletteFadeIn(dnpal);
  180.     pause(100);
  181.  
  182.     /* Blitz 1 */
  183.     putvollbild(blitzpix[0]);
  184.     Copy2Screen();
  185.     SetPalette(blitzpal[0]);
  186.     start_sample(donner, 0);
  187.     pause(15);
  188.  
  189.     /* DN */
  190.     putvollbild(dnpix);
  191.     SetPalette(dnpal);
  192.     Copy2Screen();
  193.     pause(300);
  194.  
  195.     /* Blitz 2 */
  196.     putvollbild(blitzpix[1]);
  197.     Copy2Screen();
  198.     SetPalette(blitzpal[1]);
  199.     start_sample(donner, 1);
  200.     start_sample(donner, 2);
  201.     pause(15);
  202.  
  203.     /* DN */
  204.     putvollbild(dnpix);
  205.     SetPalette(dnpal);
  206.     Copy2Screen();
  207.     pause(500);
  208.  
  209.     free_sample(donner);
  210.  
  211.     free(blitzpix[1]);
  212.     free(blitzpix[0]);
  213.     free(dnpix);
  214.  
  215.     stop_sound();
  216.  
  217.     PaletteFadeOut(dnpal);
  218. }
  219.